using System;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web.UI.WebControls;
using Anthem;
using App_Code;
using MinCultura.Sinic.Basicas;
using Common;

using MinCultura.Sipa.EntidadesArtes; 
using MinCultura.Sipa.DataAccess.EntidadesArtes;
using MinCultura.Sipa.DataAccess.AgentesArtes;
using MinCultura.Sipa.AgentesArtes;
using UsrControls;

using CompareValidator = Anthem.CompareValidator;
using CustomValidator = Anthem.CustomValidator;
using Label = Anthem.Label;
using RadioButtonList = Anthem.RadioButtonList;
using RegularExpressionValidator = Anthem.RegularExpressionValidator;
using RequiredFieldValidator = Anthem.RequiredFieldValidator;
using TextBox = Anthem.TextBox;

namespace web.Controls
{
	/// <summary>
	/// Summary description for AgentesBasicos.
	/// </summary>
	public class InfraestructuraPublicosIngresos : SinicUserControl
	{
		protected UsrControls.TextBoxBase txtNumFuncionesAno;
		protected UsrControls.TextBoxBase txtNumAsistentesPreventa;
		protected UsrControls.TextBoxBase txtNumAsistentesVendidas;
		protected UsrControls.TextBoxBase txtNumAsistentesPases;
		protected UsrControls.TextBoxBase txtNumAsistentesInvitacion;
		protected UsrControls.TextBoxBase txtNumAsistentesAno;
		protected UsrControls.TextBoxBase txtPorceOcupacionSala;
		protected UsrControls.TextBoxBase txtIngresoTaquilla;
		protected UsrControls.TextBoxBase txtIngresoPatrociniosPrivados;
		protected UsrControls.TextBoxBase txtIngresoPatrociniosPublicos;
		protected UsrControls.TextBoxBase txtIngresoAlquileres;
		protected UsrControls.TextBoxBase txtDescripOtrosIngresos;
		protected UsrControls.TextBoxBase txtCostoMantenimiento;
		protected UsrControls.TextBoxBase txtCostoServicios;
		protected UsrControls.TextBoxBase txtCostoPersonal;
		protected UsrControls.TextBoxBase txtCostoPublicidad;
		protected UsrControls.TextBoxBase txtCostoProduccion;
		protected UsrControls.TextBoxBase txtCostoDotacionTecnica;
		protected UsrControls.TextBoxBase txtDescripOtrosCostos;
		protected UsrControls.TextBoxBase txtValorOtrosCostos;
		protected UsrControls.TextBoxBase txtTotalCostosAno;
		protected UsrControls.DropDownBase ddlEjercicioEconomico;
		protected UsrControls.TextBoxBase txtNumPersonalAdmon;
		protected UsrControls.TextBoxBase txtNumPersonalTecnico;
		protected UsrControls.TextBoxBase txtNumPersonalArtistico;
		protected Anthem.CompareValidator cmpIngresoTaquilla;
		protected Anthem.CompareValidator cmpIngresoPatrociniosPrivados;
		protected Anthem.CompareValidator cmpIngresoPatrociniosPublicos;
		protected Anthem.CompareValidator cmpIngresoAlquileres;
		protected Anthem.CompareValidator cmpCostoMantenimiento;
		protected Anthem.CompareValidator cmpCostoServicios;
		protected Anthem.CompareValidator cmpCostoPersonal;
		protected Anthem.CompareValidator cmpCostoPublicidad;
		protected Anthem.CompareValidator cmpCostoProduccion;
		protected Anthem.CompareValidator cmpCostoDotacionTecnica;
		protected Anthem.CompareValidator cmpValorOtrosCostos;
		protected UsrControls.TextBoxBase txtCapacidadSillas;
		protected UsrControls.TextBoxBase txtTotalComposicionIngreso;
		protected Anthem.CompareValidator cmpOtrosIngresos;
		protected UsrControls.TextBoxBase txtValorOtrosIngresos;
		protected Anthem.CheckBoxList cblTiposPoblacion;

		#region - Eventos

		private void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				Manager.Register(this);

				if (this.Identificador == 0)
				{
					CargarControles();
				}

				txtNumFuncionesAno.OnChangeFunction = "CalcularTotalAsistentes();";
				txtNumAsistentesPreventa.OnChangeFunction = "CalcularTotalAsistentes();";
				txtNumAsistentesVendidas.OnChangeFunction = "CalcularTotalAsistentes();";
				txtNumAsistentesPases.OnChangeFunction = "CalcularTotalAsistentes();";
				txtNumAsistentesInvitacion.OnChangeFunction = "CalcularTotalAsistentes();";
				txtCapacidadSillas.OnChangeFunction = "CalcularTotalAsistentes();";
				txtCapacidadSillas.Attributes["style"] = "display: none";

				txtIngresoTaquilla.OnChangeFunction = "CalcularEstructuraIngresos();";
				txtIngresoPatrociniosPrivados.OnChangeFunction = "CalcularEstructuraIngresos();";
				txtIngresoPatrociniosPublicos.OnChangeFunction = "CalcularEstructuraIngresos();";
				txtIngresoAlquileres.OnChangeFunction = "CalcularEstructuraIngresos();";
				txtValorOtrosIngresos.OnChangeFunction = "CalcularEstructuraIngresos();";

				txtCostoMantenimiento.OnChangeFunction = "CalcularEstructuraCostos();";
				txtCostoServicios.OnChangeFunction = "CalcularEstructuraCostos();";
				txtCostoPersonal.OnChangeFunction = "CalcularEstructuraCostos();";
				txtCostoPublicidad.OnChangeFunction = "CalcularEstructuraCostos();";
				txtCostoProduccion.OnChangeFunction = "CalcularEstructuraCostos();";
				txtCostoDotacionTecnica.OnChangeFunction = "CalcularEstructuraCostos();";
				txtValorOtrosCostos.OnChangeFunction = "CalcularEstructuraCostos();";
			}
		}

		#endregion 

		#region - Metodos 		

		public DataSet ObtenerDatos()
		{
			DataSet dsPublicosIngresos = new DataSet();

			//Publicos e Ingresos
			InfraestructuraEntidadesPublicosData dtPublicosInsgresos = new InfraestructuraEntidadesPublicosData();
			
			DataRow fila = dtPublicosInsgresos.NewRow();
			fila[InfraestructuraEntidadesPublicosData.INF_ID_FIELD] = this.Identificador;
			if (txtNumFuncionesAno.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_FUNCIONES_ANO_FIELD] = txtNumFuncionesAno.Text;
			if (txtNumAsistentesPreventa.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_PREVENTA_FIELD] = txtNumAsistentesPreventa.Text;
			if (txtNumAsistentesVendidas.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_VENDIDAS_FIELD] = txtNumAsistentesVendidas.Text;
			if (txtNumAsistentesPases.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_PASES_FIELD] = txtNumAsistentesPases.Text;
			if (txtNumAsistentesInvitacion.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_INVITACION_FIELD] = txtNumAsistentesInvitacion.Text;
			if (txtNumAsistentesAno.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_ANO_FIELD] = txtNumAsistentesAno.Text;			
			if (txtPorceOcupacionSala.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_PORCENTAJE_OCUPACION_SALA_FIELD] = txtPorceOcupacionSala.Text;

			if (txtIngresoTaquilla.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_TAQUILLA_FIELD] = txtIngresoTaquilla.Text;
			if (txtIngresoPatrociniosPrivados.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_PATROCINIOS_PRIVADOS_FIELD] = txtIngresoPatrociniosPrivados.Text;
			if (txtIngresoPatrociniosPublicos.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_PATROCINIOS_PUBLICOS_FIELD] = txtIngresoPatrociniosPublicos.Text ;
			if (txtIngresoAlquileres.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_ALQUILERES_FIELD] = txtIngresoAlquileres.Text;
			if (txtDescripOtrosIngresos.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_OTROS_INGRESOS_FIELD] = txtDescripOtrosIngresos.Text;
			if (txtValorOtrosIngresos.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_OTROS_INGRESOS_VALOR_FIELD] = txtValorOtrosIngresos.Text;
			if (txtTotalComposicionIngreso.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_ANO_FIELD] = txtTotalComposicionIngreso.Text;

			if (txtCostoMantenimiento.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_MANTENIMIENTO_FIELD] = txtCostoMantenimiento.Text;
			if (txtCostoServicios.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_SERVICIOS_FIELD] = txtCostoServicios.Text;
			if (txtCostoPersonal.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_PERSONAL_FIELD] = txtCostoPersonal.Text;
			if (txtCostoPublicidad.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_PUBLICIDAD_FIELD] = txtCostoPublicidad.Text;
			if (txtCostoProduccion.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_PRODUCCION_FIELD] = txtCostoProduccion.Text;
			if (txtCostoDotacionTecnica.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_DOTACION_FIELD] = txtCostoDotacionTecnica.Text;
			
			fila[InfraestructuraEntidadesPublicosData.INF_COSTO_OTRA_DESCRIPCION_FIELD] = txtDescripOtrosCostos.Text;

			if (txtValorOtrosCostos.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_OTRA_FIELD] = txtValorOtrosCostos.Text;
			if (txtTotalCostosAno.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_COSTO_ANO_FIELD] = txtTotalCostosAno.Text;

			fila[InfraestructuraEntidadesPublicosData.INF_EJERCICIO_ECONOMICO_FIELD] = ddlEjercicioEconomico.SelectedValue;

			if (txtNumPersonalAdmon.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_PERSONAL_ADMON_FIELD] = txtNumPersonalAdmon.Text;
			if (txtNumPersonalTecnico.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_PERSONAL_TECNICO_FIELD] = txtNumPersonalTecnico.Text;
			if (txtNumPersonalArtistico.Text.Trim().Length > 0)
				fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_PERSONAL_ARTISTICO_FIELD] = txtNumPersonalArtistico.Text;
			dtPublicosInsgresos.addInfraestructuraEntidadesPublicos(fila);

			dsPublicosIngresos.Tables.Add(dtPublicosInsgresos);
			
			//Poblacion
			InfraestructuraPoblacionData dtPoblacion = new InfraestructuraPoblacionData();
			foreach (ListItem liPoblacion in cblTiposPoblacion.Items)
			{				
				if (liPoblacion.Selected)
				{
					DataRow drPoblacion = dtPoblacion.NewRow();
					drPoblacion[InfraestructuraPoblacionData.INF_ID_FIELD] = this.Identificador;
					drPoblacion[InfraestructuraPoblacionData.POB_ID_FIELD] = liPoblacion.Value;
					dtPoblacion.addInfraestructuraPoblacion(drPoblacion);					
				}
			}
			dsPublicosIngresos.Tables.Add(dtPoblacion);

			return dsPublicosIngresos;
		}

		public void CreaEntorno(DataSet dsPublicosIngresos)
		{
			if (!IsPostBack)
			{
				CargarControles();
				//Publicos e Ingresos
				InfraestructuraEntidadesPublicosData dtPublicosInsgresos = (InfraestructuraEntidadesPublicosData)dsPublicosIngresos.Tables[InfraestructuraEntidadesPublicosData.ART_INFRAESTRUCTURA_ENTIDADES_PUBLICOS_TABLE];
			
				DataRow fila = dtPublicosInsgresos.Rows[0];
				this.Identificador = Convert.ToDecimal(fila[InfraestructuraEntidadesPublicosData.INF_ID_FIELD]);
				txtNumFuncionesAno.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_FUNCIONES_ANO_FIELD].ToString();
				txtNumAsistentesPreventa.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_PREVENTA_FIELD].ToString();
				txtNumAsistentesVendidas.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_VENDIDAS_FIELD].ToString();
				txtNumAsistentesPases.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_PASES_FIELD].ToString();
				txtNumAsistentesInvitacion.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_INVITACION_FIELD].ToString();
				txtNumAsistentesAno.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_ASISTENTES_ANO_FIELD].ToString();
				txtPorceOcupacionSala.Text = fila[InfraestructuraEntidadesPublicosData.INF_PORCENTAJE_OCUPACION_SALA_FIELD].ToString();

				txtIngresoTaquilla.Text = fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_TAQUILLA_FIELD].ToString();
				txtIngresoPatrociniosPrivados.Text = fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_PATROCINIOS_PRIVADOS_FIELD].ToString();
				txtIngresoPatrociniosPublicos.Text = fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_PATROCINIOS_PUBLICOS_FIELD].ToString();
				txtIngresoAlquileres.Text = fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_ALQUILERES_FIELD].ToString();
				txtDescripOtrosIngresos.Text = fila[InfraestructuraEntidadesPublicosData.INF_OTROS_INGRESOS_FIELD].ToString();
				txtValorOtrosIngresos.Text = fila[InfraestructuraEntidadesPublicosData.INF_OTROS_INGRESOS_VALOR_FIELD].ToString().Trim();
				txtTotalComposicionIngreso.Text = fila[InfraestructuraEntidadesPublicosData.INF_INGRESO_ANO_FIELD].ToString();

				txtCostoMantenimiento.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_MANTENIMIENTO_FIELD].ToString();
				txtCostoServicios.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_SERVICIOS_FIELD].ToString();
				txtCostoPersonal.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_PERSONAL_FIELD].ToString();
				txtCostoPublicidad.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_PUBLICIDAD_FIELD].ToString();
				txtCostoProduccion.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_PRODUCCION_FIELD].ToString();
				txtCostoDotacionTecnica.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_DOTACION_FIELD].ToString();
				txtDescripOtrosCostos.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_OTRA_DESCRIPCION_FIELD].ToString();
				txtValorOtrosCostos.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_OTRA_FIELD].ToString();
				txtTotalCostosAno.Text = fila[InfraestructuraEntidadesPublicosData.INF_COSTO_ANO_FIELD].ToString();

				ddlEjercicioEconomico.SelectedValue = fila[InfraestructuraEntidadesPublicosData.INF_EJERCICIO_ECONOMICO_FIELD].ToString();
				txtNumPersonalAdmon.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_PERSONAL_ADMON_FIELD].ToString();
				txtNumPersonalTecnico.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_PERSONAL_TECNICO_FIELD].ToString();
				txtNumPersonalArtistico.Text = fila[InfraestructuraEntidadesPublicosData.INF_NUMERO_PERSONAL_ARTISTICO_FIELD].ToString();
			
				//Poblacion
				InfraestructuraPoblacionData dtPoblacion = (InfraestructuraPoblacionData)dsPublicosIngresos.Tables[InfraestructuraPoblacionData.ART_INFRAESTRUCTURA_POBLACION_TABLE];			
				foreach (DataRow drPoblacion in dtPoblacion.Rows)
				{
					ListItem liPoblacion = cblTiposPoblacion.Items.FindByValue(drPoblacion[InfraestructuraPoblacionData.POB_ID_FIELD].ToString());
					if (liPoblacion != null)
					{
						liPoblacion.Selected = true;
					}
				}
			}
		}

		private void CargarControles()
		{
			cblTiposPoblacion.Items.Clear();
            Poblacion poblacion = new Poblacion(ConfigurationManager.AppSettings["Conn"]);
			PoblacionData poblacionData = new PoblacionData();

			poblacionData = poblacion.BuscarPoblacion();
			if (poblacionData != null)
			{				
				cblTiposPoblacion.DataSource = poblacionData.Tables[0].DefaultView;
				cblTiposPoblacion.DataTextField = PoblacionData.POB_NOMBRE_FIELD;
				cblTiposPoblacion.DataValueField = PoblacionData.POB_ID_FIELD;
				cblTiposPoblacion.DataBind();
			}
			
		}
		#endregion 

		#region - Propiedades

		public decimal Identificador
		{
			get
			{
				if (ViewState["Identificador"] != null)
					return ((decimal) ViewState["Identificador"]);
				else
					return (0);
			}
			set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
		}

		public DataSet PublicosIngresosData
		{
			get
			{
				return ObtenerDatos();
			}
			set
			{
				CreaEntorno(value);
			}
		}

		public string CapacidadSillas
		{
			set { txtCapacidadSillas.Text = value; }
		}

		#endregion 

		#region Web Form Designer generated code

		protected override void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}

		private void InitializeComponent()
		{
			this.Load += new System.EventHandler(this.Page_Load);

		}

		#endregion

	}
}